<html>
<head><meta charset="utf-8"><title>Bikeshed for ABI clobber syntax · project-inline-asm · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/index.html">project-inline-asm</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html">Bikeshed for ABI clobber syntax</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="233439867"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233439867" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233439867">(Apr 07 2021 at 06:54)</a>:</h4>
<p>How should the ABI clobber syntax look like?</p>
<ul>
<li><code>clobber("C")</code>, <code>clobber("stdcall")</code>, <code>clobber("sysv64")</code></li>
<li><code>clobber_abi("C")</code></li>
<li><code>clobber_for_abi("C")</code></li>
<li>Propose your own color for the bikeshed!</li>
</ul>



<a name="233517110"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233517110" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233517110">(Apr 07 2021 at 16:05)</a>:</h4>
<p>is a clobber a separate entry from the options in the list of asm inputs?</p>



<a name="233517241"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233517241" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233517241">(Apr 07 2021 at 16:06)</a>:</h4>
<p>I'm imagining it as an extra argument just before <code>options</code>. But I'm open to all ideas.</p>



<a name="233517507"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233517507" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233517507">(Apr 07 2021 at 16:08)</a>:</h4>
<p><span class="user-mention" data-user-id="143274">@Amanieu</span> I don't think ABI clobbers need a separate name. I think they can use the same argument as register clobbers: <code>clobber("eax")</code>, <code>clobber("C")</code>.</p>



<a name="233517588"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233517588" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233517588">(Apr 07 2021 at 16:09)</a>:</h4>
<p>The syntax for register clobbers is <code>out("eax") _</code>.</p>



<a name="233517665"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233517665" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233517665">(Apr 07 2021 at 16:09)</a>:</h4>
<p>I mean, if we're going to have a "clobber" directive it should work for both.</p>



<a name="233517701"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233517701" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233517701">(Apr 07 2021 at 16:09)</a>:</h4>
<p>Seems confusing otherwise.</p>



<a name="233517735"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233517735" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233517735">(Apr 07 2021 at 16:10)</a>:</h4>
<p>That's why I was thinking of being more explicit and using <code>clobber_abi</code>.</p>



<a name="233518001"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233518001" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233518001">(Apr 07 2021 at 16:11)</a>:</h4>
<p>my proposal is that clobbers are outside the options list as a separate entity so that the "ideal" formatting has it on its own line, and then you use the verbose <code>clobber_for_abi</code> name</p>



<a name="233518238"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233518238" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233518238">(Apr 07 2021 at 16:13)</a>:</h4>
<p>Regarding what goes inside the quotes, if you're planning to support multiple ABIs, using the name of the ABI seems like a good idea.</p>



<a name="233518391"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233518391" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233518391">(Apr 07 2021 at 16:14)</a>:</h4>
<p>What's the rationale for not letting clobber support both registers and ABIs?</p>



<a name="233518435"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233518435" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233518435">(Apr 07 2021 at 16:14)</a>:</h4>
<p>We already have a syntax for clobbering registers.</p>



<a name="233518466"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233518466" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233518466">(Apr 07 2021 at 16:14)</a>:</h4>
<p>It doesn't make sense to have 2 ways of doing the same thing.</p>



<a name="233518582"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233518582" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233518582">(Apr 07 2021 at 16:15)</a>:</h4>
<p>We also have both <code>if</code> and <code>match</code>; why have both when the latter works for everything?</p>



<a name="233518685"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233518685" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233518685">(Apr 07 2021 at 16:16)</a>:</h4>
<p>having written a module full of inline asm earlier this week, the current <code>out(..) _</code> system seems very good and clear.</p>



<a name="233518812"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233518812" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233518812">(Apr 07 2021 at 16:17)</a>:</h4>
<p>and the current system does work for everything if you combine all the in, out, inout, inlateout possibilities. clobbers would be the very limited version</p>



<a name="233519271"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233519271" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233519271">(Apr 07 2021 at 16:20)</a>:</h4>
<p>So, what's the reason to not use something like <code>out(C) _</code> as the call-clobber syntax?</p>



<a name="233519416"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233519416" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233519416">(Apr 07 2021 at 16:20)</a>:</h4>
<p>C isn't a register or even a register class.</p>



<a name="233519833"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233519833" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233519833">(Apr 07 2021 at 16:23)</a>:</h4>
<p>I guess I'm not seeing the distinction you're making. To me it makes sense to support both registers and groups of registers via the same clobber syntax. "This clobbers xyz plus whatever C calls clobber".</p>



<a name="233519882"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233519882" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233519882">(Apr 07 2021 at 16:23)</a>:</h4>
<p>What would <code>in(C)</code> even mean in this context?</p>



<a name="233520052"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233520052" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233520052">(Apr 07 2021 at 16:24)</a>:</h4>
<p>It wouldn't be valid. I agree with the notion of having <code>clobber</code> to make that clearer, I just think it should work for any clobber.</p>



<a name="233520060"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233520060" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233520060">(Apr 07 2021 at 16:24)</a>:</h4>
<p>Using <code>out(abi("C")) _</code> should be fine</p>



<a name="233520169"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233520169" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233520169">(Apr 07 2021 at 16:25)</a>:</h4>
<p><span class="user-mention" data-user-id="224471">@Lokathor</span> Ah, are you concerned about name conflicts between an architecture register and an ABI name?</p>



<a name="233520191"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233520191" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233520191">(Apr 07 2021 at 16:25)</a>:</h4>
<p>yes</p>



<a name="233520402"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233520402" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233520402">(Apr 07 2021 at 16:26)</a>:</h4>
<p>the GB has a register named <code>C</code> and gcc can (badly) compile C code for the GB, so it's not unreasonable to imagine that some day rust could be awkwardly be put there, or on some other platform with a register just named <code>C</code></p>



<a name="233520466"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233520466" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233520466">(Apr 07 2021 at 16:27)</a>:</h4>
<p>It's named C, not c?</p>



<a name="233520743"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233520743" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233520743">(Apr 07 2021 at 16:29)</a>:</h4>
<p><span class="user-mention" data-user-id="143274">@Amanieu</span> FWIW, I think I objected to this before, but I don't think I do now: if you wanted to introduce clobber and <em>remove</em> the _ syntax for out, I'd have no objection. Then there would only be one way to write a clobber.</p>



<a name="233520964"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233520964" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233520964">(Apr 07 2021 at 16:30)</a>:</h4>
<p>(I do think inout with =&gt; still needs to be able to use _, but out doesn't.)</p>



<a name="233521059"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233521059" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233521059">(Apr 07 2021 at 16:30)</a>:</h4>
<p>What about the distinction between <code>out("eax") _</code> and <code>lateout("eax") _</code>?</p>



<a name="233521355"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233521355" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233521355">(Apr 07 2021 at 16:32)</a>:</h4>
<p>The reason I want separate syntax is that ABI clobbers work very differently from register clobbers:</p>
<ul>
<li>ABI clobbers don't conflict with existing register outputs: instead the ABI clobber acts as a fallback default for any registers you haven't explicitly specified.</li>
<li>ABI clobbers will clobber some registers that can't be explicitly used as operands otherwise (e.g.  x87<code>st(0)</code>).</li>
<li>You can only have 1 ABI clobber and it is always an output clobber.</li>
</ul>



<a name="233521792"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233521792" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233521792">(Apr 07 2021 at 16:35)</a>:</h4>
<p>Why can you only have one ABI clobber? What if one block of assembly calls two functions with different ABIs?</p>



<a name="233522021"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233522021" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233522021">(Apr 07 2021 at 16:36)</a>:</h4>
<p>Also, does clobber act like out or lateout? And might we need both?</p>



<a name="233522072"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233522072" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Amanieu <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233522072">(Apr 07 2021 at 16:37)</a>:</h4>
<p>It acts as lateout.</p>



<a name="233522251"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233522251" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233522251">(Apr 07 2021 at 16:38)</a>:</h4>
<p>So you might get inputs in one of the ABI registers? Seems fine, but potentially error-prone. I remember and agree with your rationale for inverting the GCC/LLVM default and making out mean earlyclobber.</p>



<a name="233540825"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233540825" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233540825">(Apr 07 2021 at 18:41)</a>:</h4>
<p><span class="user-mention" data-user-id="239881">@Josh Triplett</span> for that particular system, it's from the bad ancient days of all caps all the time. A reasonable assembler probably ignores case though. The mostly general u16 registers are AF, BC, DE, HL, and each of those can be addressed as u8 instead with just one letter. It's slightly weird, but we should be trying to expect the slightly weird</p>



<a name="233541033"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233541033" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233541033">(Apr 07 2021 at 18:43)</a>:</h4>
<p>For ABI clobbers, why couldn't you use <code>|</code> to "union" all clobbers from two call ABI definitions?</p>



<a name="233543622"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233543622" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Josh Triplett <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233543622">(Apr 07 2021 at 19:01)</a>:</h4>
<p>I'm not going to bikeshed <code>|</code> vs <code>,</code> to list more than one.</p>



<a name="233547580"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/216763-project-inline-asm/topic/Bikeshed%20for%20ABI%20clobber%20syntax/near/233547580" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lokathor <a href="https://rust-lang.github.io/zulip_archive/stream/216763-project-inline-asm/topic/Bikeshed.20for.20ABI.20clobber.20syntax.html#233547580">(Apr 07 2021 at 19:29)</a>:</h4>
<p>oh, well exact syntax isn't important, but i didn't see anything about being able to combine them</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>